Neste relatório, iremos explorar os dados da atriz Julia Roberts. Os dados foram extraídos do RottenTomatoes.

## ANTES DE USAR
# Para criar data/movies.csv
import_data("julia_roberts") # ou com o ator/atriz que você escolher
## Loading required package: rvest
## Loading required package: xml2
## 
## Attaching package: 'rvest'
## The following object is masked from 'package:purrr':
## 
##     pluck
## The following object is masked from 'package:readr':
## 
##     guess_encoding
## Warning in rlang::eval_tidy(~as.numeric(gsub("[$|M]", "", BOXOFFICE)),
## <environment>): NAs introduzidos por coerção
filmes = read_imported_data()

Descrição

O objetivo aqui, é fazer um agrupamento dos filmes da atriz levando em consideração duas variáveis: bilheteria e avaliação.
Primeiro, vamos analisar separadamente cada uma dessas variáveis, utilizaremos também o ano de lançamento de cada filme para observar a variação durante o tempo.

p = filmes %>% 
    ggplot(aes(size = 3, x = ano, 
               y = bilheteria, 
               text = paste("Filme:",filme,
                            "\nBilheteria:",
                            bilheteria,"m",
                            "\nAvaliação:", avaliacao,
                            "\nAno:",ano))) +
    geom_point(color = paleta[1]) +
    labs(title = "Variação da bilheteria ao longo dos anos", y = "Bilheteria", x = "Ano de lançamento")
ggplotly(p, tooltip = "text")
p = filmes %>% 
    ggplot(aes(size = 3, x = ano, 
               y = avaliacao, 
               text = paste("Filme:",filme,
                            "\nBilheteria:",
                            bilheteria,"m",
                            "\nAvaliação:", avaliacao,
                            "\nAno:",ano))) +
    geom_point(color = paleta[5]) +
    labs(title = "Variação da avaliação ao longo dos anos", y = "Avaliação", x = "Ano de lançamento")
ggplotly(p, tooltip = "text")
p = filmes %>% 
    ggplot(aes(x = "", y = bilheteria, text = paste("Filme:",filme,
                            "\nBilheteria:",
                            bilheteria,"m"))) + 
    geom_jitter(width = .05, alpha = .3, size = 3) + 
    labs(x = "", y="Bilheteria")
ggplotly(p, tooltip="text")
m_transformado = filmes %>% 
    mutate(b = log10(bilheteria))
summary(m_transformado %>% select(bilheteria, b))
##    bilheteria           b        
##  Min.   : 28.20   Min.   :1.450  
##  1st Qu.: 35.60   1st Qu.:1.551  
##  Median : 66.60   Median :1.823  
##  Mean   : 74.49   Mean   :1.803  
##  3rd Qu.: 93.10   3rd Qu.:1.969  
##  Max.   :183.40   Max.   :2.263
n_clusters = 4
km = m_transformado %>% 
    select(b, avaliacao) %>% 
    kmeans(centers = n_clusters, nstart = 20)
agrupado = km %>% 
    augment(m_transformado)
m_transformado = filmes %>% 
    mutate(bilh_scaled = as.vector(scale(log10(bilheteria))), 
           av_scaled = as.vector(scale(avaliacao))) 
agrupa_bilh_avaliacao<- function(df, k){
    df %>% 
        select(bilh_scaled, av_scaled) %>%
        kmeans(centers = k, 
               nstart = 20) %>% 
        augment(df) %>% 
        mutate(.cluster = as.character(.cluster))
}
agrupamentos = tibble(k = 1:6) %>% 
    mutate(agrupamento = map(k, ~ agrupa_bilh_avaliacao(m_transformado, .))) %>% 
    unnest(agrupamento)
 
agrupamentos %>%
    ggplot(aes(
        x = avaliacao,
        y = bilheteria,
        label = filme,
        colour = .cluster
    )) +
    geom_point(size = 2, alpha = .8) +
    facet_wrap( ~ k) +
    scale_y_log10()

p = agrupado %>%
    ggplot(aes(x = avaliacao, y = bilheteria, color = .cluster, label = filme))  +
    geom_point(size = 2) +
    scale_y_log10() 
ggplotly(p)